package com.micangcaihang.micang.mvp.task.contract;


import com.micangcaihang.common.base.mvp.BaseModel;
import com.micangcaihang.common.base.mvp.BasePresenter;
import com.micangcaihang.common.base.mvp.IBaseView;
import com.micangcaihang.common.http.ApiResult;
import com.micangcaihang.micang.entity.PickerEntity;
import com.micangcaihang.micang.entity.TuftInfoEntity;
import com.micangcaihang.micang.http.request.TaskTuftRequest;

import java.util.List;

import io.reactivex.Observable;

/**
 * <pre>
 *     author : Fandy
 *     e-mail : fandayongfly@gmail.com
 *     time   : 2017/7/24
 *     update : 2017/7/24
 *     desc   : 房产信息契约
 *     version: 1.0
 * </pre>
 */
public interface TaskTuftInfoContract {
    interface View extends IBaseView {
        void returnTuftInfoData(TuftInfoEntity tuftInfoEntity);

        /**
         * 环路区间
         *
         * @param list
         */
        void returnRingRdDirectionData(List<PickerEntity> list);

        /**
         * 房屋结构
         *
         * @param list
         */
        void returnRoomConstructionData(List<PickerEntity> list);

        /**
         * 环路区间环数
         *
         * @return list
         */
        void returnCirclePositionData(List<PickerEntity> list);
        /**
         * 房屋用途
         *
         * @return list
         */
        void returnHouseUseData(List<PickerEntity> list);
        /**
         * 产权类型
         *
         * @return list
         */
        void returnPropertyRightTypeData(List<PickerEntity> list);
        /**
         * 房屋朝向
         *
         * @return list
         */
        void returnHourseOrientationData(List<PickerEntity> list);
        /**
         * 装修状况
         *
         * @return list
         */
        void returnFitmentStatusData(List<PickerEntity> list);
        /**
         * 建筑类型
         *
         * @return list
         */
        void returnStructureTypeData(List<PickerEntity> list);
        /**
         * 使用状态
         *
         * @return list
         */
        void returnUseinStatueData(List<PickerEntity> list);
        /**
         * 整体结构
         *
         * @return list
         */
        void returnStructureModifyData(List<PickerEntity> list);
        /**
         * 唯一房产
         *
         * @return list
         */
        void returnIsOnlyHouseData(List<PickerEntity> list);
        /**
         * 购买年数
         *
         * @return list
         */
        void returnPurchaseYearData(List<PickerEntity> list);
    }

    interface Model extends BaseModel {
        /**
         * 加载待处理任务列表
         *
         * @return
         */
        Observable<ApiResult<TuftInfoEntity>> getTuftInfoData(String id);

        /**
         * 环路区间方向
         *
         * @return
         */
        Observable<ApiResult<List<PickerEntity>>> getRingRdDirection();

        /**
         * 房屋结构
         *
         * @return
         */
        Observable<ApiResult<List<PickerEntity>>> getRoomConstruction();

        /**
         * 环路区间环数
         *
         * @return
         */
        Observable<ApiResult<List<PickerEntity>>> getCirclePosition();

        /**
         * 房屋用途
         *
         * @return
         */
        Observable<ApiResult<List<PickerEntity>>> getHouseUse();

        /**
         * 产权类型
         *
         * @return
         */
        Observable<ApiResult<List<PickerEntity>>> getPropertyRightType();

        /**
         * 房屋朝阳
         *
         * @return
         */
        Observable<ApiResult<List<PickerEntity>>> getHourseOrientation();

        /**
         * 装修状况
         *
         * @return
         */
        Observable<ApiResult<List<PickerEntity>>> getFitmentStatus();

        /**
         * 建筑类型
         *
         * @return
         */
        Observable<ApiResult<List<PickerEntity>>> getStructureType();

        /**
         * 使用状态
         *
         * @return
         */
        Observable<ApiResult<List<PickerEntity>>> getUseinStatue();

        /**
         * 整体结构
         *
         * @return
         */
        Observable<ApiResult<List<PickerEntity>>> getStructureModify();

        /**
         * 唯一房产
         *
         * @return
         */
        Observable<ApiResult<List<PickerEntity>>> getIsOnlyHouse();

        /**
         * 购买年数
         *
         * @return
         */
        Observable<ApiResult<List<PickerEntity>>> getPurchaseYear();
        /**
         * 保存信息
         *
         * @return
         */
        Observable<ApiResult<Void>> savaTuftInfo(TaskTuftRequest request);
    }

    abstract class Presenter extends BasePresenter<View> {
        /**
         * 环路区间方向
         */
        public abstract void loadRingRdDirectionData();

        /**
         * 房屋结构
         */
        public abstract void loadRoomConstructionData();

        /**
         * 环路区间环数
         */
        public abstract void loadCirclePositionData();

        /**
         * 房屋用途
         */
        public abstract void loadHouseUseData();

        /**
         * 产权类型
         */
        public abstract void loadPropertyRightTypeData();

        /**
         * 房屋朝阳
         */
        public abstract void loadHourseOrientationData();

        /**
         * 装修状况
         */
        public abstract void loadFitmentStatusData();

        /**
         * 建筑类型
         */
        public abstract void loadStructureTypeData();

        /**
         * 使用状态
         */
        public abstract void loadUseinStatueData();

        /**
         * 整体结构
         */
        public abstract void loadStructureModifyData();

        /**
         * 唯一房产
         */
        public abstract void loadIsOnlyHouseData();

        /**
         * 购买年数
         */
        public abstract void loadPurchaseYearData();

        public abstract void saveTuftInfo(TaskTuftRequest request);
    }
}
